package ph.com.gs3.formalistics.model.vo.view;

import java.util.List;

import ph.com.gs3.formalistics.model.vo.business.document.DocumentAction;
import ph.com.gs3.formalistics.model.vo.business.document.DocumentSummary;
import ph.com.gs3.formalistics.model.vo.business.document.OutgoingAction;

/**
 * UserAction represents actions made by the users such as submitting a new document, an
 * outgoing document, etc.
 * 
 * @author Ervinne Sodusta
 */
public class DocumentDisplayItem {

	public static enum TargetDocument {
		OUTGOING_ACTION, ORIGINAL_DOCUMENT
	}

	// Data fields
	private int documentId;
	private int documentAuthorId;
	private int documentProcessorId;
	private int formId;
	private boolean isStarred;
	private boolean isOutgoing;

	private TargetDocument targetDocument;

	// Configuration fields
	private boolean showActionsButton;
	private boolean showStarButton;
	private boolean showCommentButton;

	// View fields
	private String header;
	private String date;
	private String subheader;
	private String contentsHeader;
	private String contentsBody;

	private String footerHeader;
	private String footerBody;

	private List<DocumentAction> availableActions;

	private DocumentSummary sourceDocumentSummary;
	private OutgoingAction sourceOutgoingAction;

	// ================================================================================
	// {{ Getters & Setters

	public int getDocumentId() {
		return documentId;
	}

	public void setDocumentId(int documentId) {
		this.documentId = documentId;
	}

	public int getDocumentAuthorId() {
		return documentAuthorId;
	}

	public void setDocumentAuthorId(int documentAuthorId) {
		this.documentAuthorId = documentAuthorId;
	}

	public int getDocumentProcessorId() {
		return documentProcessorId;
	}

	public void setDocumentProcessorId(int documentProcessorId) {
		this.documentProcessorId = documentProcessorId;
	}

	public int getFormId() {
		return formId;
	}

	public void setFormId(int formId) {
		this.formId = formId;
	}

	public boolean isStarred() {
		return isStarred;
	}

	public void setStarred(boolean isStarred) {
		this.isStarred = isStarred;
	}

	public boolean isOutgoing() {
		return isOutgoing;
	}

	public void setOutgoing(boolean isOutgoing) {
		this.isOutgoing = isOutgoing;
	}

	public boolean isShowActionsButton() {
		return showActionsButton;
	}

	public void setShowActionsButton(boolean showActionsButton) {
		this.showActionsButton = showActionsButton;
	}

	public boolean isShowStarButton() {
		return showStarButton;
	}

	public void setShowStarButton(boolean showStarButton) {
		this.showStarButton = showStarButton;
	}

	public boolean isShowCommentButton() {
		return showCommentButton;
	}

	public void setShowCommentButton(boolean showCommentButton) {
		this.showCommentButton = showCommentButton;
	}

	public String getHeader() {
		return header;
	}

	public void setHeader(String header) {
		this.header = header;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	public String getSubheader() {
		return subheader;
	}

	public void setSubheader(String subheader) {
		this.subheader = subheader;
	}

	public String getContentsHeader() {
		return contentsHeader;
	}

	public void setContentsHeader(String contentsHeader) {
		this.contentsHeader = contentsHeader;
	}

	public String getContentsBody() {
		return contentsBody;
	}

	public void setContentsBody(String contentsBody) {
		this.contentsBody = contentsBody;
	}

	public String getFooterHeader() {
		return footerHeader;
	}

	public void setFooterHeader(String footerHeader) {
		this.footerHeader = footerHeader;
	}

	public String getFooterBody() {
		return footerBody;
	}

	public void setFooterBody(String footerBody) {
		this.footerBody = footerBody;
	}

	public List<DocumentAction> getAvailableActions() {
		return availableActions;
	}

	public void setAvailableActions(List<DocumentAction> availableActions) {
		this.availableActions = availableActions;
	}

	public DocumentSummary getSourceDocumentSummary() {
		return sourceDocumentSummary;
	}

	public void setSourceDocumentSummary(DocumentSummary sourceDocumentSummary) {
		this.sourceDocumentSummary = sourceDocumentSummary;
	}

	public OutgoingAction getSourceOutgoingAction() {
		return sourceOutgoingAction;
	}

	public void setSourceOutgoingAction(OutgoingAction sourceOutgoingAction) {
		this.sourceOutgoingAction = sourceOutgoingAction;
	}

	public TargetDocument getTargetDocument() {
	    return targetDocument;
    }

	public void setTargetDocument(TargetDocument targetDocument) {
	    this.targetDocument = targetDocument;
    }

	// }}

}
